bitkeeper revision 1.1709.1.10 (42b08f028deGQkb0GcmyBpOwUB9Rjw)
authordjm@kirby.fc.hp.com <djm@kirby.fc.hp.com>
Wed, 15 Jun 2005 20:26:42 +0000 (20:26 +0000)
committerdjm@kirby.fc.hp.com <djm@kirby.fc.hp.com>
Wed, 15 Jun 2005 20:26:42 +0000 (20:26 +0000)
More hyperprivops (slow for now)
Signed-off-by: Dan Magenheimer <dan.magenheimer@hp.com>
xen/arch/ia64/privop.c
xen/arch/ia64/process.c

index 1f50ea24480d5870d7b103c35320a4c7536216a5..99f57a13a1473cfaa89efc9f33eff736ca1c33a7 100644 (file)
@@ -748,10 +748,16 @@ priv_emulate(VCPU *vcpu, REGS *regs, UINT64 isr)
 #define HYPERPRIVOP_ITC_D              0x5
 #define HYPERPRIVOP_ITC_I              0x6
 #define HYPERPRIVOP_SSM_I              0x7
-#define HYPERPRIVOP_MAX                        0x7
+#define HYPERPRIVOP_GET_IVR            0x8
+#define HYPERPRIVOP_GET_TPR            0x9
+#define HYPERPRIVOP_SET_TPR            0xa
+#define HYPERPRIVOP_EOI                        0xb
+#define HYPERPRIVOP_SET_ITM            0xc
+#define HYPERPRIVOP_MAX                        0xc
 
 char *hyperpriv_str[HYPERPRIVOP_MAX+1] = {
        0, "rfi", "rsm.dt", "ssm.dt", "cover", "itc.d", "itc.i", "ssm.i",
+       "=ivr", "=tpr", "tpr=", "eoi", "itm=",
        0
 };
 
@@ -797,6 +803,23 @@ ia64_hyperprivop(unsigned long iim, REGS *regs)
            case HYPERPRIVOP_SSM_I:
                (void)vcpu_set_psr_i(v);
                return 1;
+           case HYPERPRIVOP_GET_IVR:
+               (void)vcpu_get_ivr(v,&val);
+               regs->r8 = val;
+               return 1;
+           case HYPERPRIVOP_GET_TPR:
+               (void)vcpu_get_tpr(v,&val);
+               regs->r8 = val;
+               return 1;
+           case HYPERPRIVOP_SET_TPR:
+               (void)vcpu_set_tpr(v,regs->r8);
+               return 1;
+           case HYPERPRIVOP_EOI:
+               (void)vcpu_set_eoi(v,0L);
+               return 1;
+           case HYPERPRIVOP_SET_ITM:
+               (void)vcpu_set_itm(v,regs->r8);
+               return 1;
        }
        return 0;
 }
index 670d30d07116e1a596bdc2a36f7ef7aeb6cadbf5..a26194d8f3d4940f02b8a66f578c6aef3320aecb 100644 (file)
@@ -754,7 +754,7 @@ if (!running_on_sim) { printf("SSC_OPEN, not implemented on hardware.  (ignoring
                vcpu_set_gr(current,8,-1L);
                break;
            default:
-               printf("ia64_handle_break: bad ssc code %lx, iip=%p\n",ssc,regs->cr_iip);
+               printf("ia64_handle_break: bad ssc code %lx, iip=%p, b0=%p\n",ssc,regs->cr_iip,regs->b0);
                break;
        }
        vcpu_increment_iip(current);